/*
 * 版权声明 (c) 2025 XXX科技有限公司
 *
 * 本软件及其相关文档文件受版权保护。未经版权所有者明确书面许可，任何单位或个人不得
 * 以任何形式复制、传播、修改、出售、出租、反向工程、反编译或利用本软件的任何部分。
 *
 * 对于任何违反本声明的行为，版权所有者保留追究法律责任的权利。
 */

#ifndef __RC_MODULE_H__
#define __RC_MODULE_H__
#include "core/module.h"
#include "core/service.h"
#include "core/context.h"

namespace mod {
	class RegCenterModule final : public Module {
	public:
		explicit RegCenterModule(std::shared_ptr<Context> ctx, const std::string &module_name);
		RegCenterModule(const RegCenterModule &)            = delete;
		RegCenterModule &operator=(const RegCenterModule &) = delete;
		RegCenterModule(RegCenterModule &&)                 = delete;
		RegCenterModule &operator=(RegCenterModule &&)      = delete;
		~RegCenterModule();

		bool Init() override;
		void Start() override;
		void Stop() override;

		// 向服务发布者订阅服务
		void Subscribe(const ServiceInfo &service_info);
		// 取消订阅服务
		void Unsubscribe(const ServiceInfo &service_info);
		// 向本地注册中心注册服务
		void Register(const ServiceInfo &service_info);
	}; // class RegCenterModule
} // namespace mod
#endif // __RC_MODULE_H__
